$(function () {//加载表格
    var selOrgId = getCommbotreeValue("selOrgId");
    //没有选择 就查询所有的下拉框的
    if (isNull(selOrgId)) {
        selOrgId = getCommbotreeAllValue("selOrgId");
    }
    $('#dg').datagrid({
        loadMsg: '数据加载中，请稍后...',
        url: system + '/role/listInfo',
        pagination: true,
        singleSelect: false,//如果为true，则只允许选择一行。
        title: "角色信息列表",
        pageSize: pageSize,
        pageList: pageList,
        checkOnSelect: true,//当用户点击行的时候该复选框就会被选中或取消选中。
        striped: true,//是否显示斑马线效果。
        rownumbers: true,// 显示一个行号列
        fitColumns: false,//真正的自动展开/收缩列的大小，以适应网格的宽度，防止水平滚动。
        queryParams: {
            strOrgName: selOrgId
        },
        columns: [[
            {field: 'itemid', title: 'Order ID', width: 80, checkbox: true},
            {field: 'id', title: '角色编号', hidden: true},
            {field: 'name', title: '角色名称'},
            {field: 'strOrgName', title: '所属机构'},
            {field: 'description', title: '角色说明'},
            {field: 'strType', title: '角色类型'},
            {field: 'strStatus', title: '角色状态'}
        ]],
        loadFilter: function (data) { //加载后台数据
            if (successcode != data.code) {
                return errorHandle(data);
            }
            return data.data;
        },
        //双击事件
        onDblClickRow: function (rowIndex, rowData) {
            viewRole(rowData)
        }
    }).datagrid("columnMoving");;
    initData();
    treeSearch("ss", "treeContent") // 绑定树搜索功能
})

// 初始化加载下拉框的值
function initData() {
    $.ajax({
            type: "post",
            url: system + "/role/init",
            success: function (data) {
                if (successcode != data.code) {
                    return errorHandle(data);
                }
                var listOrganization = data.data.listOrganization;
                var sysRoleType = data.data.sysRoleType;
                var sysStatus = data.data.sysStatus;
                if (!isNull(listOrganization)) {
                    // 两种方式加载，不然会次选第一个的不能选择
                    $("#orgId").combotree("loadData", listOrganization);
                    $('#selOrgId').combotree({data: listOrganization});
                }
                if (!isNull(sysRoleType)) {
                    var sysRoleType2 = data.data.sysRoleType2;
                    sysRoleType2.unshift({"showmsg": "==全部==", "value": ''});
                    $('#selType').combobox("loadData", sysRoleType2);
                    $("#type").combobox("loadData", sysRoleType);
                }
                if (!isNull(sysStatus)) {
                    sysStatus.unshift({"showmsg": "==全部==", "value": ''});
                    $('#selStatus').combobox("loadData", sysStatus);
                }
            }, error: function (data) {
                $.messager.progress('close');
                $.messager.alert('系统提示', "系统异常，请稍后重试！", 'error');
            }
        }
    );
}

//搜索的方法
function doSearch() {
    var queryParams = $("#dg").datagrid("options").queryParams;
    queryParams["name"] = $("#selName").val();
    queryParams["strStatus"] = getCommboxValue("selStatus");
    queryParams["strType"] = getCommboxValue("selType");
    var selOrgId = getCommbotreeValue("selOrgId");
    if (isNull(selOrgId)) { //没有选择基金 就查询所有的下拉框的
        queryParams["strOrgName"] = getCommbotreeAllValue("selOrgId");
    } else {
        queryParams["strOrgName"] = selOrgId;
    }
    $("#dg").datagrid("options").queryParams = queryParams;
    $("#dg").datagrid("load");
}

/**
 * 查看角色信息方法
 */
function viewRole(rowData) {
    $('#myformDetail').form('disableValidation');//清除验证样式
    $('#dlgDetail').dialog({
        title: "查看角色信息",
        buttons: [{
            text: '返回',
            iconCls: 'icon-back',
            handler: function () {
                $('#dlgDetail').dialog('close');
            }
        }
        ]
    }).dialog('open');
    $('#myformDetail').form('load', rowData);//页面赋值
}

/**
 * 新增角色信息方法
 */
function addRole() {
    $("#myformDetail").form('clear');//添加之前清空表达信息
    $('#myformDetail').form('enableValidation');//设置验证样式
    $('#type').combobox('selectedIndex', 0); //选中第一个
    var root = $('#orgId').combotree('tree').tree('getRoot');
    $('#orgId').combotree('setValue', root.id);
    $('#dlgDetail').dialog({
        title: "新增角色信息",
        buttons: [{
            text: '保存',
            iconCls: 'icon-save',
            handler: function () {
                saveItemRole(1);
            }
        }, {
            text: '返回',
            iconCls: 'icon-back',
            handler: function () {
                $('#dlgDetail').dialog('close');
            }
        }
        ]
    }).dialog('open');
}

/**
 * 修改角色方法
 */
function editRole() {
    $('#myformDetail').form('enableValidation');//设置验证样式
    var arr = $('#dg').datagrid('getSelections');
    if (null == arr || arr.length != 1) {
        $.messager.alert('系统提示', "请选择一行数据！", 'warning');
        return;
    }
    $('#dlgDetail').dialog({
        title: "修改角色信息",
        buttons: [{
            text: '保存',
            iconCls: 'icon-save',
            handler: function () {
                saveItemRole(2);
            }
        }, {
            text: '返回',
            iconCls: 'icon-back',
            handler: function () {
                $('#dlgDetail').dialog('close');
            }
        }
        ]
    }).dialog('open');
    $('#myformDetail').form('load', arr[0]);//页面赋值
}

/**
 * 保存角色信息的方法
 */
function saveItemRole(ftype) {
    //验证表单信息
    if (!$("#myformDetail").form('validate')) { //验证表单信息
        return;
    }
    var url = system + "/role/editRole";
    if (1 == ftype) {
        url = system + "/role/addRole";
    }
    $.messager.confirm('系统提示', "确定保存角色信息吗？", function (parm) {
        if (!parm) {
            return;
        }
        $('#myformDetail').form('submit', {
            url: url,
            onSubmit: function () {
                $.messager.progress({text: '正在处理中...',});
            }, success: function (data) {
                $.messager.progress('close');
                try {
                    data = JSON.parse(data);
                    if (successcode != data.code) {
                        return errorHandle(data);
                    }
                    //关闭弹出窗口
                    $('#dlgDetail').dialog('close');
                    $.messager.show({title: '系统提示', msg: data.message});
                    $("#dg").datagrid("load");//刷新表格
                } catch (e) {
                    $.messager.progress('close');
                    $.messager.alert('系统提示', "系统异常，请稍后重试！", 'error');
                }
            }
        });
    });
}

/**
 * 删除角色信息方法
 */
function delRole() {
    var arr = $('#dg').datagrid('getSelections');
    if (null == arr || arr.length == 0) {
        $.messager.alert('系统提示', "请选择你要删除的数据！", 'warning');
        return;
    }
    $.messager.confirm('系统提示', '确定要删除这' + arr.length + '条角色信息吗？', function (param) {
        if (!param) {
            return;
        }
        var ids = [];
        for (var i = 0; i < arr.length; i++) {
            ids.push(arr[i].id);
        }
        if (isNull(ids)) {
            return;
        }
        $.messager.progress({text: '正在处理中...',});
        $.ajax({
                type: "post",
                url: system + "/role/delRole",
                dataType: "json",
                data: {
                    ids: JSON.stringify(ids)
                },
                success: function (data) {
                    $.messager.progress('close');
                    if (successcode != data.code) {
                        return errorHandle(data);
                    }
                    $("#dg").datagrid("load");//刷新表格
                    $.messager.show({title: '系统提示', msg: data.message});
                }, error: function (data) {
                    $.messager.progress('close');
                    $.messager.alert('系统提示', "系统异常，请稍后重试！", 'error');
                }
            }
        );
    });

}

/**
 * 角色权限树
 */
function roleEnt() {
    var arr = $('#dg').datagrid('getSelections');
    if (null == arr || arr.length != 1) {
        $.messager.alert('系统提示', "请选择一行数据！", 'warning');
        return;
    }
    $.messager.progress({text: '正在处理中...',});
    $.ajax({
            type: "post",
            url: system + "/role/getFuncByRoleId",
            dataType: "json",
            data: {
                roleId: arr[0].id
            },
            success: function (data) {
                $.messager.progress('close');
                if (successcode != data.code) {
                    return errorHandle(data);
                }
                $('#dlg').dialog({
                    title: "用户角色权限",
                    buttons: [{
                        text: '保存',
                        iconCls: 'icon-save',
                        handler: function () {
                            saveAuthByRoleId(); //保存角色功能信息
                        }
                    }, {
                        text: '返回',
                        iconCls: 'icon-back',
                        handler: function () {
                            $('#dlg').dialog('close');
                        }
                    }
                    ]
                }).dialog('open');
                $('#treeContent').tree({
                    cascadeCheck: false,
                    checkbox: true,
                    lines: false,
                    data: data.data,
                })
                $("#authRoleId").val(arr[0].id);
            }, error: function (data) {
                $.messager.progress('close');
                $.messager.alert('系统提示', "系统异常，请稍后重试！", 'error');
            }
        }
    );
}

/**
 * 保存角色功能信息
 */
function saveAuthByRoleId() {
    var nodes = $('#treeContent').tree("getChecked");
    $.messager.confirm('系统提示', '确定保存该角色权限信息吗？', function (parm) {
        if (!parm) {
            return;
        }
        //读取被选中的菜单和按钮
        var arryMenu = [];
        var arryRegion = [];
        for (var int = 0; int < nodes.length; int++) {
            var attributes = nodes[int].attributes;
            if ("menu" == attributes) {
                arryMenu.push(nodes[int].id)
            }
            if ("region" == attributes) {
                arryRegion.push(nodes[int].id)
            }
        }
        $.messager.progress({text: '正在处理中...',});
        $.ajax({
                type: "post",
                url: system + "/role/saveAuthByRoleId",
                dataType: "json",
                data: {
                    arryMenu: JSON.stringify(arryMenu),
                    arryRegion: JSON.stringify(arryRegion),
                    roleId: $("#authRoleId").val()
                },
                success: function (data) {
                    $.messager.progress('close');
                    if (successcode != data.code) {
                        return errorHandle(data);
                    }
                    $.messager.show({title: '系统提示', msg: data.message});
                    //关闭弹出窗口
                    $('#dlg').dialog('close');
                }, error: function (data) {
                    $.messager.progress('close');
                    $.messager.alert('系统提示', "系统异常，请稍后重试！", 'error');
                }
            }
        );
    });
}
